package cn.chinaunicom.mini.program.dingtalk.events.publisher;

import com.alibaba.fastjson2.JSON;
import com.dingtalk.open.app.api.message.GenericOpenDingTalkEvent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @ProjectName: dingtalk-property
 * @Package: cn.chinaunicom.property.events.publisher
 * @ClassName: DingTalkPublisher
 * @Description: 钉钉事件发布者
 * @Author: wangjc
 * @CreateDate: 2024/6/5
 * @UpdateUser: wangjc
 * @UpdateDate: 2024/6/5
 * @UpdateRemark: 更新内容
 * @Version: 1.0
 */
@Slf4j
@Service
public class DingTalkPublisher {

    @Autowired
    private EventProcessor eventProcessor;


    /**
     * 处理钉钉开放平台的事件动作。
     * 根据事件类型，发布相应的事件到事件总线。
     *
     * @param event 钉钉开放平台的事件对象，包含事件的具体数据和类型。
     */
    public void performAction(GenericOpenDingTalkEvent event) {
        // 获取事件类型
        String eventType = event.getEventType();
        // 记录接收到的钉钉事件，用于调试和审计
        // 假设完成某操作后需要发布事件
        log.info("钉钉服务最新事件[{}]: {}", eventType, JSON.toJSONString(event));

        // 钉钉事件处理
        eventProcessor.processEvent(this, event);
    }

}
